package controller

import (
	"gin_firt_web_demo/interceptor"
	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
	"net/http"
)

func UserController(ginServer *gin.Engine) {
	// 2. POST请求：该接口无需进行登录校验，从body中获取前端传递来的数据。
	ginServer.POST("/hello", func(context *gin.Context) {
		// 进行业务处理 ....
		// 解析请求体中的参数
		var params struct {
			ID   int    `json:"id"`
			Name string `json:"name"`
			Flag bool   `json:"flag"`
		}
		if err := context.ShouldBindJSON(&params); err != nil {
			context.JSON(http.StatusBadRequest, gin.H{"error": "invalid request body"})
			return
		}
		logrus.Infof("id: %v, name: %s, code: %v", params.ID, params.Name, params.Flag)
		logrus.Errorf("This is a error message.")
		logrus.Warnf("This is warning message.")
		context.JSON(200, gin.H{"msg": "hello world"})
	})

	// 3. GET请求：接收前端传递来的参数，该接口需要通过登录校验。
	ginServer.GET("/user/get", interceptor.LoginHandler(), func(context *gin.Context) {
		// 取出中间件插入的值
		s := context.MustGet("userID").(string)
		logrus.Infof("中间件中的值：%s", s)

		userId := context.Query("userId")
		userName := context.Query("userName")
		userCode := context.Query("userCode")
		logrus.Infof("%v, %v, %v", userName, userId, userCode)
		context.JSON(http.StatusOK, gin.H{
			"userId":   userId,
			"userName": userName,
		})
	})
}
